package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 复制文件
 */
public class CopyDemo {
    public static void main(String[] args) throws IOException {
        /*
            创建一个文件输入流连接到原文件
            创建一个文件输出流连接到复制文件
            循环通过输入流读取原文件每一个字节并通过输出流写入到复制文件中
         */
//        FileInputStream fis = new FileInputStream("./image.jfif");
//        FileOutputStream fos = new FileOutputStream("./image_cp.jfif");
        FileInputStream fis = new FileInputStream("G:/Git-2.28.0-64-bit.exe");
        FileOutputStream fos = new FileOutputStream("G:/Git-2.28.0-64-bit_cp.exe");
        /*
            原理:
            原文件数据:
            11001101 00111100 00001111 11110000 ....

            d = fis.read()
                                               vvvvvvvv
            int d : 00000000 00000000 00000000 11001101

            fos.write(d)

            复制文件数据:
            11001101
         */
        int d;//用来记录每次读取到的字节

        //返回UTC时间，公元1970年1月1日00:00:00 开始计算经过的时间
        //下面返回的是从1970年元旦这一刻到当前系统时间所经过的毫秒
        long start = System.currentTimeMillis();
        while( (d = fis.read())  != -1) {//原文件读到末尾了就不用读取了
            fos.write(d);
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕!耗时:"+(end-start)+"毫秒");
        fis.close();
        fos.close();
    }
}
